package com.wlyuan.open.api;

import com.wlyuan.open.dto.api.*;
import com.wlyuan.open.vo.OpenClientDetailVO;
import com.wlyuan.utils.Page;

/**
 * @author lijing
 * @description
 */
public interface IOpenClientService {

    /**
     * 根据appId查询信息
     */
    OpenClientDetailVO getOpenClientByAppId(String appId);

    OpenClientDetailVO getOpenClientByTenantId(Long tenantId, Long userId);

    /**
     * 根据手机号获取
     *
     * @param mobile
     * @return
     */
    OpenClientDetailVO getOpenClientByMobile(String mobile);

    /**
     * 注册
     *
     * @param register
     * @return
     */
    OpenClientDetailVO register(OpenClientLoginDTO register);

    /**
     * 登录
     *
     * @param login
     * @return
     */
    OpenClientDetailVO login(OpenClientLoginDTO login);

    /**
     * 换绑手机号
     *
     * @param unbind
     * @return
     */
    OpenClientDetailVO unbindMobile(OpenClientUnbindMobileDTO unbind);

    /**
     * 获取应用详情
     * 不返回appSecret,手机号脱敏
     *
     * @param appId
     * @return
     */
    OpenClientDetailVO getOpenClient(String appId);

    /**
     * 变更appSecret
     *
     * @param change
     * @return
     */
    OpenClientDetailVO changeAppSecret(OpenClientChangeAppSecretDTO change);

    /**
     * 绑定账号
     *
     * @param bind
     * @return
     */
    OpenClientDetailVO bind(OpenClientBindDTO bind);

    /**
     * 获取appSecret
     *
     * @param appId
     * @return
     */
    String getAppSecret(String appId);

    /**
     * 分页查询
     *
     * @param filter
     * @return
     */
    Page<OpenClientDetailVO> search(OpenClientFilterDTO filter);

    /**
     * 审核通过
     *
     * @param approved
     */
    void approved(OpenClientApprovedDTO approved);

    /**
     * 审核拒绝
     *
     * @param reject
     */
    void reject(OpenClientRejectDTO reject);

    /**
     * 启用
     *
     * @param enable
     */
    void enable(OpenClientEnableDTO enable);

    /**
     * 禁用
     *
     * @param disable
     */
    void disable(OpenClientDisableDTO disable);

    /**
     * 根据管理员账号获取手机号
     *
     * @param account
     * @return
     */
    String getUserMobile(String account);
}
